Update pid.c
[inav.git] / docs / ESC and servo outputs.md
bloba9821603c06a1f70c7c966d024392af86b77d93e
1 # ESC and servo outputs
3 ## ESC protocols
5 INAV support the following ESC protocols:
7 * "standard" PWM with 50-400Hz update rate
8 * OneShot125
9 * OneShot42
10 * Multishot
11 * Brushed motors
12 * DSHOT150, DSHOT300, DSHOT600
14 ESC protocol can be selected in Configurator. No special configuration is required.
16 Check ESC documentation of the list of protocols that it is supporting.
18 ## Servo outputs
20 By default, INAV uses 50Hz servo update rate. If you want to increase it, make sure that servos support
21 higher update rates. Only high end digital servos are capable of handling 200Hz and above!
23 ## Servo output mapping
25 Not all outputs on a flight controller can be used for servo outputs. It is a hardware thing. Always check flight controller documentation. 
27 While motors are usually ordered sequentially, here is no standard output layout for servos! Some boards might not be supporting servos in _Multirotor_ configuration at all!
29 ## Modifying output mapping
31 ### Modifying all outputs at the same time
33 Since INAV 5, it has been possible to force *ALL* outputs to be `MOTORS` or `SERVOS`.
35 Traditional ESCs usually can be controlled via a servo output, but would require calibration.
37 This can be done with the `output_mode` CLI setting. Allowed values:
39 * `AUTO` assigns outputs according to the default mapping
40 * `SERVOS` assigns all outputs to servos
41 * `MOTORS` assigns all outputs to motors
43 ### Modifying only some outputs
45 INAV 7 introduced extra functionality that let you force only some outputs to be either *MOTORS* or *SERVOS*, with some restrictions dictated by the hardware.
47 The mains restrictions is that outputs need to be associated with timers, which are usually shared between multiple outputs. Two outputs on the same timer need to have the same function.
49 The easiest way to modify outputs, is to use the Mixer tab in the Configurator, as it will clearly show you which timer is used by all outputs, but you can also use `timer_output_mode` on the cli.
50 This can be used in conjunction to the previous method, in that cass all outputs will follow `output_mode` and `timer_output_mode` overrides are applied after that.